// 对于axios进行二次封装
import axios from "axios"
// 引入进度条模块
import nprogress from "nprogress";
// 引入进度条样式
import "nprogress/nprogress.css"

// 1:利用axios得create方法 创建一个axios实例
// 2：requests就是axios,只不过稍微配置了一下
const requests = axios.create({
    //配置对象
    //基础路径，发请求得时候，路径中会带有/api
    baseURL:'/api',
    // 请求超时，5s后不再请求
    timeout:5000
});
//请求拦截器，发请求时 请求拦截器可以捕获得到，可以在发请求时做一些事情

// 请求拦截器
requests.interceptors.request.use(    
    config => {        
        // 每次发送请求之前判断vuex中是否存在token        
        // 如果存在，则统一在http请求的header都加上token，这样后台根据token判断你的登录情况
        // 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断 
        // const token = store.state.token;        
        // token && (config.headers.Authorization = token);      
        //config中有个header很重要  
        nprogress.start()
        return config;    
    },    
    error => {        
        return Promise.error(error);    
});
// 响应拦截器
 // 响应拦截器
 requests.interceptors.response.use(    
    res => {   
        nprogress.done()
       return res.data
    },    
    
    error => {            
       return Promise.reject(new Error("faile"))
    } 
);

// 对外暴露
export default requests;

